{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Residual Networks\n",
    "\n",
    "Welcome to the second assignment of this week! You will learn how to build very deep convolutional networks, using Residual Networks (ResNets). In theory, very deep networks can represent very complex functions; but in practice, they are hard to train. Residual Networks, introduced by [He et al.](https://arxiv.org/pdf/1512.03385.pdf), allow you to train much deeper networks than were previously practically feasible.\n",
    "\n",
    "**In this assignment, you will:**\n",
    "- Implement the basic building blocks of ResNets. \n",
    "- Put together these building blocks to implement and train a state-of-the-art neural network for image classification. \n",
    "\n",
    "This assignment will be done in Keras. \n",
    "\n",
    "Before jumping into the problem, let's run the cell below to load the required packages."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "from keras import layers\n",
    "from keras.layers import Input, Add, Dense, Activation, ZeroPadding2D, BatchNormalization, Flatten, Conv2D, AveragePooling2D, MaxPooling2D, GlobalMaxPooling2D\n",
    "from keras.models import Model, load_model\n",
    "from keras.preprocessing import image\n",
    "from keras.utils import layer_utils\n",
    "from keras.utils.data_utils import get_file\n",
    "from keras.applications.imagenet_utils import preprocess_input\n",
    "import pydot\n",
    "from IPython.display import SVG\n",
    "from keras.utils.vis_utils import model_to_dot\n",
    "from keras.utils import plot_model\n",
    "from resnets_utils import *\n",
    "from keras.initializers import glorot_uniform\n",
    "import scipy.misc\n",
    "from matplotlib.pyplot import imshow\n",
    "%matplotlib inline\n",
    "\n",
    "import keras.backend as K\n",
    "K.set_image_data_format('channels_last')\n",
    "K.set_learning_phase(1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1 - The problem of very deep neural networks\n",
    "\n",
    "Last week, you built your first convolutional neural network. In recent years, neural networks have become deeper, with state-of-the-art networks going from just a few layers (e.g., AlexNet) to over a hundred layers.\n",
    "\n",
    "The main benefit of a very deep network is that it can represent very complex functions. It can also learn features at many different levels of abstraction, from edges (at the lower layers) to very complex features (at the deeper layers). However, using a deeper network doesn't always help. A huge barrier to training them is vanishing gradients: very deep networks often have a gradient signal that goes to zero quickly, thus making gradient descent unbearably slow. More specifically, during gradient descent, as you backprop from the final layer back to the first layer, you are multiplying by the weight matrix on each step, and thus the gradient can decrease exponentially quickly to zero (or, in rare cases, grow exponentially quickly and \"explode\" to take very large values). \n",
    "\n",
    "During training, you might therefore see the magnitude (or norm) of the gradient for the earlier layers descrease to zero very rapidly as training proceeds: "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<img src=\"images/vanishing_grad_kiank.png\" style=\"width:450px;height:220px;\">\n",
    "<caption><center> <u> <font color='purple'> **Figure 1** </u><font color='purple'>  : **Vanishing gradient** <br> The speed of learning decreases very rapidly for the early layers as the network trains </center></caption>\n",
    "\n",
    "You are now going to solve this problem by building a Residual Network!"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2 - Building a Residual Network\n",
    "\n",
    "In ResNets, a \"shortcut\" or a \"skip connection\" allows the gradient to be directly backpropagated to earlier layers:  \n",
    "\n",
    "<img src=\"images/skip_connection_kiank.png\" style=\"width:650px;height:200px;\">\n",
    "<caption><center> <u> <font color='purple'> **Figure 2** </u><font color='purple'>  : A ResNet block showing a **skip-connection** <br> </center></caption>\n",
    "\n",
    "The image on the left shows the \"main path\" through the network. The image on the right adds a shortcut to the main path. By stacking these ResNet blocks on top of each other, you can form a very deep network. \n",
    "\n",
    "We also saw in lecture that having ResNet blocks with the shortcut also makes it very easy for one of the blocks to learn an identity function. This means that you can stack on additional ResNet blocks with little risk of harming training set performance. (There is also some evidence that the ease of learning an identity function--even more than skip connections helping with vanishing gradients--accounts for ResNets' remarkable performance.)\n",
    "\n",
    "Two main types of blocks are used in a ResNet, depending mainly on whether the input/output dimensions are same or different. You are going to implement both of them. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.1 - The identity block\n",
    "\n",
    "The identity block is the standard block used in ResNets, and corresponds to the case where the input activation (say $a^{[l]}$) has the same dimension as the output activation (say $a^{[l+2]}$). To flesh out the different steps of what happens in a ResNet's identity block, here is an alternative diagram showing the individual steps:\n",
    "\n",
    "<img src=\"images/idblock2_kiank.png\" style=\"width:650px;height:150px;\">\n",
    "<caption><center> <u> <font color='purple'> **Figure 3** </u><font color='purple'>  : **Identity block.** Skip connection \"skips over\" 2 layers. </center></caption>\n",
    "\n",
    "The upper path is the \"shortcut path.\" The lower path is the \"main path.\" In this diagram, we have also made explicit the CONV2D and ReLU steps in each layer. To speed up training we have also added a BatchNorm step. Don't worry about this being complicated to implement--you'll see that BatchNorm is just one line of code in Keras! \n",
    "\n",
    "In this exercise, you'll actually implement a slightly more powerful version of this identity block, in which the skip connection \"skips over\" 3 hidden layers rather than 2 layers. It looks like this: \n",
    "\n",
    "<img src=\"images/idblock3_kiank.png\" style=\"width:650px;height:150px;\">\n",
    "<caption><center> <u> <font color='purple'> **Figure 4** </u><font color='purple'>  : **Identity block.** Skip connection \"skips over\" 3 layers.</center></caption>\n",
    "\n",
    "Here're the individual steps.\n",
    "\n",
    "First component of main path: \n",
    "- The first CONV2D has $F_1$ filters of shape (1,1) and a stride of (1,1). Its padding is \"valid\" and its name should be `conv_name_base + '2a'`. Use 0 as the seed for the random initialization. \n",
    "- The first BatchNorm is normalizing the channels axis.  Its name should be `bn_name_base + '2a'`.\n",
    "- Then apply the ReLU activation function. This has no name and no hyperparameters. \n",
    "\n",
    "Second component of main path:\n",
    "- The second CONV2D has $F_2$ filters of shape $(f,f)$ and a stride of (1,1). Its padding is \"same\" and its name should be `conv_name_base + '2b'`. Use 0 as the seed for the random initialization. \n",
    "- The second BatchNorm is normalizing the channels axis.  Its name should be `bn_name_base + '2b'`.\n",
    "- Then apply the ReLU activation function. This has no name and no hyperparameters. \n",
    "\n",
    "Third component of main path:\n",
    "- The third CONV2D has $F_3$ filters of shape (1,1) and a stride of (1,1). Its padding is \"valid\" and its name should be `conv_name_base + '2c'`. Use 0 as the seed for the random initialization. \n",
    "- The third BatchNorm is normalizing the channels axis.  Its name should be `bn_name_base + '2c'`. Note that there is no ReLU activation function in this component. \n",
    "\n",
    "Final step: \n",
    "- The shortcut and the input are added together.\n",
    "- Then apply the ReLU activation function. This has no name and no hyperparameters. \n",
    "\n",
    "**Exercise**: Implement the ResNet identity block. We have implemented the first component of the main path. Please read over this carefully to make sure you understand what it is doing. You should implement the rest. \n",
    "- To implement the Conv2D step: [See reference](https://keras.io/layers/convolutional/#conv2d)\n",
    "- To implement BatchNorm: [See reference](https://faroit.github.io/keras-docs/1.2.2/layers/normalization/) (axis: Integer, the axis that should be normalized (typically the channels axis))\n",
    "- For the activation, use:  `Activation('relu')(X)`\n",
    "- To add the value passed forward by the shortcut: [See reference](https://keras.io/layers/merge/#add)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# GRADED FUNCTION: identity_block\n",
    "\n",
    "def identity_block(X, f, filters, stage, block):\n",
    "    \"\"\"\n",
    "    Implementation of the identity block as defined in Figure 3\n",
    "    \n",
    "    Arguments:\n",
    "    X -- input tensor of shape (m, n_H_prev, n_W_prev, n_C_prev)\n",
    "    f -- integer, specifying the shape of the middle CONV's window for the main path\n",
    "    filters -- python list of integers, defining the number of filters in the CONV layers of the main path\n",
    "    stage -- integer, used to name the layers, depending on their position in the network\n",
    "    block -- string/character, used to name the layers, depending on their position in the network\n",
    "    \n",
    "    Returns:\n",
    "    X -- output of the identity block, tensor of shape (n_H, n_W, n_C)\n",
    "    \"\"\"\n",
    "    \n",
    "    # defining name basis\n",
    "    conv_name_base = 'res' + str(stage) + block + '_branch'\n",
    "    bn_name_base = 'bn' + str(stage) + block + '_branch'\n",
    "    \n",
    "    # Retrieve Filters\n",
    "    F1, F2, F3 = filters\n",
    "    \n",
    "    # Save the input value. You'll need this later to add back to the main path. \n",
    "    X_shortcut = X\n",
    "    \n",
    "    # First component of main path\n",
    "    X = Conv2D(filters = F1, kernel_size = (1, 1), strides = (1,1), \n",
    "               padding = 'valid', name = conv_name_base + '2a', \n",
    "               kernel_initializer = glorot_uniform(seed=0))(X)\n",
    "    X = BatchNormalization(axis = 3, name = bn_name_base + '2a')(X)\n",
    "    X = Activation('relu')(X)\n",
    "    \n",
    "    ### START CODE HERE ###\n",
    "    \n",
    "    # Second component of main path (≈3 lines)\n",
    "# GRADED FUNCTION: identity_block\n",
    "\n",
    "def identity_block(X, f, filters, stage, block):\n",
    "    \"\"\"\n",
    "    Implementation of the identity block as defined in Figure 3\n",
    "    \n",
    "    Arguments:\n",
    "    X -- input tensor of shape (m, n_H_prev, n_W_prev, n_C_prev)\n",
    "    f -- integer, specifying the shape of the middle CONV's window for the main path\n",
    "    filters -- python list of integers, defining the number of filters in the CONV layers of the main path\n",
    "    stage -- integer, used to name the layers, depending on their position in the network\n",
    "    block -- string/character, used to name the layers, depending on their position in the network\n",
    "    \n",
    "    Returns:\n",
    "    X -- output of the identity block, tensor of shape (n_H, n_W, n_C)\n",
    "    \"\"\"\n",
    "    \n",
    "    # defining name basis\n",
    "    conv_name_base = 'res' + str(stage) + block + '_branch'\n",
    "    bn_name_base = 'bn' + str(stage) + block + '_branch'\n",
    "    \n",
    "    # Retrieve Filters\n",
    "    F1, F2, F3 = filters\n",
    "    \n",
    "    # Save the input value. You'll need this later to add back to the main path. \n",
    "    X_shortcut = X\n",
    "    print(X.shape)\n",
    "    # First component of main path\n",
    "    X = Conv2D(filters = F1, kernel_size = (1, 1), strides = (1,1), \n",
    "               padding = 'valid', name = conv_name_base + '2a', \n",
    "               kernel_initializer = glorot_uniform(seed=0))(X)\n",
    "    X = BatchNormalization(axis = 3, name = bn_name_base + '2a')(X)\n",
    "    X = Activation('relu')(X)\n",
    "    \n",
    "    ### START CODE HERE ###\n",
    "    # Second component of main path (≈3 lines)\n",
    "    \n",
    "    X = Conv2D(filters = F2, kernel_size = (f, f), strides = (1,1), \n",
    "               padding = 'same', name = conv_name_base + '2b', \n",
    "               kernel_initializer = glorot_uniform(seed=0))(X)\n",
    "    X = BatchNormalization(axis=3, name = bn_name_base+'2b')(X)\n",
    "    X = Activation('relu')(X)\n",
    "    #print(X.shape)\n",
    "    # Third component of main path (≈2 lines)\n",
    "    X = Conv2D(filters = F3, kernel_size = (1, 1), strides = (1,1), \n",
    "               padding = 'valid', name = conv_name_base + '2c', \n",
    "               kernel_initializer = glorot_uniform(seed=0))(X)\n",
    "    X = BatchNormalization(axis=3, name = bn_name_base+'2c')(X)\n",
    "    #print(X.shape)\n",
    "    # Final step: Add shortcut value to main path, and pass it through a RELU activation (≈2 lines)\n",
    "    X = layers.add([X, X_shortcut])\n",
    "    X = Activation('relu')(X)\n",
    "    \n",
    "    \n",
    "    ### END CODE HERE ###\n",
    "    \n",
    "    return X"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(3, 4, 4, 6)\n",
      "out = [0.19716816 0.         1.3561227  2.1713073  0.         1.3324987 ]\n"
     ]
    }
   ],
   "source": [
    "tf.reset_default_graph()\n",
    "\n",
    "with tf.Session() as test:\n",
    "    np.random.seed(1)\n",
    "    A_prev = tf.placeholder(\"float\", [3, 4, 4, 6])\n",
    "    X = np.random.randn(3, 4, 4, 6)\n",
    "    A = identity_block(A_prev, f = 2, filters = [2, 4, 6], stage = 1, block = 'a')\n",
    "    test.run(tf.global_variables_initializer())\n",
    "    out = test.run([A], feed_dict={A_prev: X, K.learning_phase(): 0})\n",
    "    print(\"out = \" + str(out[0][1][1][0]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Expected Output**:\n",
    "\n",
    "<table>\n",
    "    <tr>\n",
    "        <td>\n",
    "            **out**\n",
    "        </td>\n",
    "        <td>\n",
    "           [ 0.94822985  0.          1.16101444  2.747859    0.          1.36677003]\n",
    "        </td>\n",
    "    </tr>\n",
    "\n",
    "</table>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2.2 - The convolutional block\n",
    "\n",
    "You've implemented the ResNet identity block. Next, the ResNet \"convolutional block\" is the other type of block. You can use this type of block when the input and output dimensions don't match up. The difference with the identity block is that there is a CONV2D layer in the shortcut path: \n",
    "\n",
    "<img src=\"images/convblock_kiank.png\" style=\"width:650px;height:150px;\">\n",
    "<caption><center> <u> <font color='purple'> **Figure 4** </u><font color='purple'>  : **Convolutional block** </center></caption>\n",
    "\n",
    "The CONV2D layer in the shortcut path is used to resize the input $x$ to a different dimension, so that the dimensions match up in the final addition needed to add the shortcut value back to the main path. (This plays a similar role as the matrix $W_s$ discussed in lecture.) For example, to reduce the activation dimensions's height and width by a factor of 2, you can use a 1x1 convolution with a stride of 2. The CONV2D layer on the shortcut path does not use any non-linear activation function. Its main role is to just apply a (learned) linear function that reduces the dimension of the input, so that the dimensions match up for the later addition step. \n",
    "\n",
    "The details of the convolutional block are as follows. \n",
    "\n",
    "First component of main path:\n",
    "- The first CONV2D has $F_1$ filters of shape (1,1) and a stride of (s,s). Its padding is \"valid\" and its name should be `conv_name_base + '2a'`. \n",
    "- The first BatchNorm is normalizing the channels axis.  Its name should be `bn_name_base + '2a'`.\n",
    "- Then apply the ReLU activation function. This has no name and no hyperparameters. \n",
    "\n",
    "Second component of main path:\n",
    "- The second CONV2D has $F_2$ filters of (f,f) and a stride of (1,1). Its padding is \"same\" and it's name should be `conv_name_base + '2b'`.\n",
    "- The second BatchNorm is normalizing the channels axis.  Its name should be `bn_name_base + '2b'`.\n",
    "- Then apply the ReLU activation function. This has no name and no hyperparameters. \n",
    "\n",
    "Third component of main path:\n",
    "- The third CONV2D has $F_3$ filters of (1,1) and a stride of (1,1). Its padding is \"valid\" and it's name should be `conv_name_base + '2c'`.\n",
    "- The third BatchNorm is normalizing the channels axis.  Its name should be `bn_name_base + '2c'`. Note that there is no ReLU activation function in this component. \n",
    "\n",
    "Shortcut path:\n",
    "- The CONV2D has $F_3$ filters of shape (1,1) and a stride of (s,s). Its padding is \"valid\" and its name should be `conv_name_base + '1'`.\n",
    "- The BatchNorm is normalizing the channels axis.  Its name should be `bn_name_base + '1'`. \n",
    "\n",
    "Final step: \n",
    "- The shortcut and the main path values are added together.\n",
    "- Then apply the ReLU activation function. This has no name and no hyperparameters. \n",
    "    \n",
    "**Exercise**: Implement the convolutional block. We have implemented the first component of the main path; you should implement the rest. As before, always use 0 as the seed for the random initialization, to ensure consistency with our grader.\n",
    "- [Conv Hint](https://keras.io/layers/convolutional/#conv2d)\n",
    "- [BatchNorm Hint](https://keras.io/layers/normalization/#batchnormalization) (axis: Integer, the axis that should be normalized (typically the features axis))\n",
    "- For the activation, use:  `Activation('relu')(X)`\n",
    "- [Addition Hint](https://keras.io/layers/merge/#add)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "# GRADED FUNCTION: convolutional_block\n",
    "\n",
    "def convolutional_block(X, f, filters, stage, block, s = 2):\n",
    "    \"\"\"\n",
    "    Implementation of the convolutional block as defined in Figure 4\n",
    "    \n",
    "    Arguments:\n",
    "    X -- input tensor of shape (m, n_H_prev, n_W_prev, n_C_prev)\n",
    "    f -- integer, specifying the shape of the middle CONV's window for the main path\n",
    "    filters -- python list of integers, defining the number of filters in the CONV layers of the main path\n",
    "    stage -- integer, used to name the layers, depending on their position in the network\n",
    "    block -- string/character, used to name the layers, depending on their position in the network\n",
    "    s -- Integer, specifying the stride to be used\n",
    "    \n",
    "    Returns:\n",
    "    X -- output of the convolutional block, tensor of shape (n_H, n_W, n_C)\n",
    "    \"\"\"\n",
    "    \n",
    "    # defining name basis\n",
    "    conv_name_base = 'res' + str(stage) + block + '_branch'\n",
    "    bn_name_base = 'bn' + str(stage) + block + '_branch'\n",
    "    \n",
    "    # Retrieve Filters\n",
    "    F1, F2, F3 = filters\n",
    "    \n",
    "    # Save the input value\n",
    "    X_shortcut = X\n",
    "\n",
    "\n",
    "    ##### MAIN PATH #####\n",
    "    # First component of main path \n",
    "    X = Conv2D(F1, (1, 1), strides = (s,s), name = conv_name_base + '2a', kernel_initializer = glorot_uniform(seed=0))(X)\n",
    "    X = BatchNormalization(axis = 3, name = bn_name_base + '2a')(X)\n",
    "    X = Activation('relu')(X)\n",
    "    \n",
    "    ### START CODE HERE ###\n",
    "    # Second component of main path (≈3 lines)\n",
    "    X = Conv2D(F2, (f, f), strides = (1,1), padding='same',name = conv_name_base + '2b', kernel_initializer = glorot_uniform(seed=0))(X)\n",
    "    X = BatchNormalization(axis = 3, name = bn_name_base + '2b')(X)\n",
    "    X = Activation('relu')(X)\n",
    "\n",
    "    # Third component of main path (≈2 lines)\n",
    "    X = Conv2D(F3, (1, 1), strides = (1,1), padding='valid',name = conv_name_base + '2c', kernel_initializer = glorot_uniform(seed=0))(X)\n",
    "    X = BatchNormalization(axis = 3, name = bn_name_base + '2c')(X)\n",
    "\n",
    "    ##### SHORTCUT PATH #### (≈2 lines)\n",
    "    X_shortcut = Conv2D(F3, (1, 1), strides = (s,s), padding='valid',name = conv_name_base + '1', kernel_initializer = glorot_uniform(seed=0))(X_shortcut)\n",
    "    X_shortcut = BatchNormalization(axis = 3, name = bn_name_base + '1')(X_shortcut)\n",
    "\n",
    "    # Final step: Add shortcut value to main path, and pass it through a RELU activation (≈2 lines)\n",
    "    X = layers.add([X, X_shortcut])\n",
    "    X = Activation('relu')(X)\n",
    "   \n",
    "    ### END CODE HERE ###\n",
    "    \n",
    "    return X"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "out = [0.09018462 1.2348977  0.46822017 0.03671761 0.         0.65516603]\n"
     ]
    }
   ],
   "source": [
    "tf.reset_default_graph()\n",
    "\n",
    "with tf.Session() as test:\n",
    "    np.random.seed(1)\n",
    "    A_prev = tf.placeholder(\"float\", [3, 4, 4, 6])\n",
    "    X = np.random.randn(3, 4, 4, 6)\n",
    "    A = convolutional_block(A_prev, f = 2, filters = [2, 4, 6], stage = 1, block = 'a')\n",
    "    test.run(tf.global_variables_initializer())\n",
    "    out = test.run([A], feed_dict={A_prev: X, K.learning_phase(): 0})\n",
    "    print(\"out = \" + str(out[0][1][1][0]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Expected Output**:\n",
    "\n",
    "<table>\n",
    "    <tr>\n",
    "        <td>\n",
    "            **out**\n",
    "        </td>\n",
    "        <td>\n",
    "           [ 0.09018463  1.23489773  0.46822017  0.0367176   0.          0.65516603]\n",
    "        </td>\n",
    "    </tr>\n",
    "\n",
    "</table>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3 - Building your first ResNet model (50 layers)\n",
    "\n",
    "You now have the necessary blocks to build a very deep ResNet. The following figure describes in detail the architecture of this neural network. \"ID BLOCK\" in the diagram stands for \"Identity block,\" and \"ID BLOCK x3\" means you should stack 3 identity blocks together.\n",
    "\n",
    "<img src=\"images/resnet_kiank.png\" style=\"width:850px;height:150px;\">\n",
    "<caption><center> <u> <font color='purple'> **Figure 5** </u><font color='purple'>  : **ResNet-50 model** </center></caption>\n",
    "\n",
    "The details of this ResNet-50 model are:\n",
    "- Zero-padding pads the input with a pad of (3,3)\n",
    "- Stage 1:\n",
    "    - The 2D Convolution has 64 filters of shape (7,7) and uses a stride of (2,2). Its name is \"conv1\".\n",
    "    - BatchNorm is applied to the channels axis of the input.\n",
    "    - MaxPooling uses a (3,3) window and a (2,2) stride.\n",
    "- Stage 2:\n",
    "    - The convolutional block uses three set of filters of size [64,64,256], \"f\" is 3, \"s\" is 1 and the block is \"a\".\n",
    "    - The 2 identity blocks use three set of filters of size [64,64,256], \"f\" is 3 and the blocks are \"b\" and \"c\".\n",
    "- Stage 3:\n",
    "    - The convolutional block uses three set of filters of size [128,128,512], \"f\" is 3, \"s\" is 2 and the block is \"a\".\n",
    "    - The 3 identity blocks use three set of filters of size [128,128,512], \"f\" is 3 and the blocks are \"b\", \"c\" and \"d\".\n",
    "- Stage 4:\n",
    "    - The convolutional block uses three set of filters of size [256, 256, 1024], \"f\" is 3, \"s\" is 2 and the block is \"a\".\n",
    "    - The 5 identity blocks use three set of filters of size [256, 256, 1024], \"f\" is 3 and the blocks are \"b\", \"c\", \"d\", \"e\" and \"f\".\n",
    "- Stage 5:\n",
    "    - The convolutional block uses three set of filters of size [512, 512, 2048], \"f\" is 3, \"s\" is 2 and the block is \"a\".\n",
    "    - The 2 identity blocks use three set of filters of size [256, 256, 2048], \"f\" is 3 and the blocks are \"b\" and \"c\".\n",
    "- The 2D Average Pooling uses a window of shape (2,2) and its name is \"avg_pool\".\n",
    "- The flatten doesn't have any hyperparameters or name.\n",
    "- The Fully Connected (Dense) layer reduces its input to the number of classes using a softmax activation. Its name should be `'fc' + str(classes)`.\n",
    "\n",
    "**Exercise**: Implement the ResNet with 50 layers described in the figure above. We have implemented Stages 1 and 2. Please implement the rest. (The syntax for implementing Stages 3-5 should be quite similar to that of Stage 2.) Make sure you follow the naming convention in the text above. \n",
    "\n",
    "You'll need to use this function: \n",
    "- Average pooling [see reference](https://keras.io/layers/pooling/#averagepooling2d)\n",
    "\n",
    "Here're some other functions we used in the code below:\n",
    "- Conv2D: [See reference](https://keras.io/layers/convolutional/#conv2d)\n",
    "- BatchNorm: [See reference](https://keras.io/layers/normalization/#batchnormalization) (axis: Integer, the axis that should be normalized (typically the features axis))\n",
    "- Zero padding: [See reference](https://keras.io/layers/convolutional/#zeropadding2d)\n",
    "- Max pooling: [See reference](https://keras.io/layers/pooling/#maxpooling2d)\n",
    "- Fully conected layer: [See reference](https://keras.io/layers/core/#dense)\n",
    "- Addition: [See reference](https://keras.io/layers/merge/#add)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "# GRADED FUNCTION: ResNet50\n",
    "\n",
    "def ResNet50(input_shape = (64, 64, 3), classes = 6):\n",
    "    \"\"\"\n",
    "    Implementation of the popular ResNet50 the following architecture:\n",
    "    CONV2D -> BATCHNORM -> RELU -> MAXPOOL -> CONVBLOCK -> IDBLOCK*2 -> CONVBLOCK -> IDBLOCK*3\n",
    "    -> CONVBLOCK -> IDBLOCK*5 -> CONVBLOCK -> IDBLOCK*2 -> AVGPOOL -> TOPLAYER\n",
    "\n",
    "    Arguments:\n",
    "    input_shape -- shape of the images of the dataset\n",
    "    classes -- integer, number of classes\n",
    "\n",
    "    Returns:\n",
    "    model -- a Model() instance in Keras\n",
    "    \"\"\"\n",
    "    \n",
    "    # Define the input as a tensor with shape input_shape\n",
    "    X_input = Input(input_shape)\n",
    "\n",
    "    \n",
    "    # Zero-Padding\n",
    "    X = ZeroPadding2D((3, 3))(X_input)\n",
    "    \n",
    "    # Stage 1\n",
    "    X = Conv2D(64, (7, 7), strides = (2, 2), name = 'conv1', kernel_initializer = glorot_uniform(seed=0))(X)\n",
    "    X = BatchNormalization(axis = 3, name = 'bn_conv1')(X)\n",
    "    X = Activation('relu')(X)\n",
    "    X = MaxPooling2D((3, 3), strides=(2, 2))(X)\n",
    "    print(X.shape)\n",
    "    # Stage 2\n",
    "    X = convolutional_block(X, f = 3, filters = [64, 64, 256], stage = 2, block='a', s = 1)\n",
    "    X = identity_block(X, 3, [64, 64, 256], stage=2, block='b')\n",
    "    X = identity_block(X, 3, [64, 64, 256], stage=2, block='c')\n",
    "\n",
    "    ### START CODE HERE ###\n",
    "\n",
    "    # Stage 3 (≈4 lines)\n",
    "    X = convolutional_block(X, f = 3, filters = [128, 128, 512], stage = 3, block='a', s = 2)\n",
    "    X = identity_block(X, 3, [128, 128, 512], stage=3, block='b')\n",
    "    X = identity_block(X, 3, [128, 128, 512], stage=3, block='c')\n",
    "    X = identity_block(X, 3, [128, 128, 512], stage=3, block='d')\n",
    "\n",
    "    # Stage 4 (≈6 lines)\n",
    "    X = convolutional_block(X, f = 3, filters = [256, 256, 1024], stage = 4, block='a', s = 2)\n",
    "    X = identity_block(X, 3, [256, 256, 1024], stage=4, block='b')\n",
    "    X = identity_block(X, 3, [256, 256, 1024], stage=4, block='c')\n",
    "    X = identity_block(X, 3, [256, 256, 1024], stage=4, block='d')\n",
    "    X = identity_block(X, 3, [256, 256, 1024], stage=4, block='e')\n",
    "    X = identity_block(X, 3, [256, 256, 1024], stage=4, block='f')\n",
    "    # Stage 5 (≈3 lines)\n",
    "    X = convolutional_block(X, f = 3, filters = [512, 512, 2048], stage = 5, block='a', s = 2)\n",
    "    X = identity_block(X, 3, [256, 256, 2048], stage=5, block='b')\n",
    "    X = identity_block(X, 3, [256, 256, 2048], stage=5, block='c')\n",
    "\n",
    "    # AVGPOOL (≈1 line). Use \"X = AveragePooling2D(...)(X)\"\n",
    "    X = AveragePooling2D(pool_size=(2,2))(X)\n",
    "    \n",
    "    ### END CODE HERE ###\n",
    "\n",
    "    # output layer\n",
    "    X = Flatten()(X)\n",
    "    X = Dense(classes, activation='softmax', name='fc' + str(classes), kernel_initializer = glorot_uniform(seed=0))(X)\n",
    "    \n",
    "    \n",
    "    # Create model\n",
    "    model = Model(inputs = X_input, outputs = X, name='ResNet50')\n",
    "\n",
    "    return model"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Run the following code to build the model's graph. If your implementation is not correct you will know it by checking your accuracy when running `model.fit(...)` below."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(?, 15, 15, 64)\n",
      "(?, 15, 15, 256)\n",
      "(?, 15, 15, 256)\n",
      "(?, 8, 8, 512)\n",
      "(?, 8, 8, 512)\n",
      "(?, 8, 8, 512)\n",
      "(?, 4, 4, 1024)\n",
      "(?, 4, 4, 1024)\n",
      "(?, 4, 4, 1024)\n",
      "(?, 4, 4, 1024)\n",
      "(?, 4, 4, 1024)\n",
      "(?, 2, 2, 2048)\n",
      "(?, 2, 2, 2048)\n"
     ]
    }
   ],
   "source": [
    "model = ResNet50(input_shape = (64, 64, 3), classes = 6)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As seen in the Keras Tutorial Notebook, prior training a model, you need to configure the learning process by compiling the model."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The model is now ready to be trained. The only thing you need is a dataset."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's load the SIGNS Dataset.\n",
    "\n",
    "<img src=\"images/signs_data_kiank.png\" style=\"width:450px;height:250px;\">\n",
    "<caption><center> <u> <font color='purple'> **Figure 6** </u><font color='purple'>  : **SIGNS dataset** </center></caption>\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "number of training examples = 1080\n",
      "number of test examples = 120\n",
      "X_train shape: (1080, 64, 64, 3)\n",
      "Y_train shape: (1080, 6)\n",
      "X_test shape: (120, 64, 64, 3)\n",
      "Y_test shape: (120, 6)\n"
     ]
    }
   ],
   "source": [
    "X_train_orig, Y_train_orig, X_test_orig, Y_test_orig, classes = load_dataset()\n",
    "\n",
    "# Normalize image vectors\n",
    "X_train = X_train_orig/255.\n",
    "X_test = X_test_orig/255.\n",
    "\n",
    "# Convert training and test labels to one hot matrices\n",
    "Y_train = convert_to_one_hot(Y_train_orig, 6).T\n",
    "Y_test = convert_to_one_hot(Y_test_orig, 6).T\n",
    "\n",
    "print (\"number of training examples = \" + str(X_train.shape[0]))\n",
    "print (\"number of test examples = \" + str(X_test.shape[0]))\n",
    "print (\"X_train shape: \" + str(X_train.shape))\n",
    "print (\"Y_train shape: \" + str(Y_train.shape))\n",
    "print (\"X_test shape: \" + str(X_test.shape))\n",
    "print (\"Y_test shape: \" + str(Y_test.shape))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Run the following cell to train your model on 2 epochs with a batch size of 32. On a CPU it should take you around 5min per epoch. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/50\n",
      "1080/1080 [==============================] - 5s 4ms/step - loss: 0.4736 - acc: 0.8519\n",
      "Epoch 2/50\n",
      "1080/1080 [==============================] - 4s 4ms/step - loss: 0.3619 - acc: 0.8852\n",
      "Epoch 3/50\n",
      "1080/1080 [==============================] - 4s 4ms/step - loss: 0.2572 - acc: 0.9204\n",
      "Epoch 4/50\n",
      "1080/1080 [==============================] - 4s 4ms/step - loss: 0.2004 - acc: 0.9481\n",
      "Epoch 5/50\n",
      "1080/1080 [==============================] - 4s 4ms/step - loss: 0.4589 - acc: 0.8657\n",
      "Epoch 6/50\n",
      "1080/1080 [==============================] - 4s 4ms/step - loss: 1.1438 - acc: 0.7065\n",
      "Epoch 7/50\n",
      "1080/1080 [==============================] - 4s 4ms/step - loss: 0.3874 - acc: 0.8694\n",
      "Epoch 8/50\n",
      "1080/1080 [==============================] - 4s 4ms/step - loss: 0.4366 - acc: 0.8639\n",
      "Epoch 9/50\n",
      "1080/1080 [==============================] - 4s 4ms/step - loss: 0.4011 - acc: 0.8944\n",
      "Epoch 10/50\n",
      "1080/1080 [==============================] - 4s 4ms/step - loss: 0.1561 - acc: 0.9519\n",
      "Epoch 11/50\n",
      "1080/1080 [==============================] - 4s 4ms/step - loss: 0.0680 - acc: 0.9759\n",
      "Epoch 12/50\n",
      "1080/1080 [==============================] - 4s 4ms/step - loss: 0.0374 - acc: 0.9852\n",
      "Epoch 13/50\n",
      "1080/1080 [==============================] - 4s 4ms/step - loss: 0.0428 - acc: 0.9907\n",
      "Epoch 14/50\n",
      "1080/1080 [==============================] - 4s 4ms/step - loss: 0.2035 - acc: 0.9361\n",
      "Epoch 15/50\n",
      "1080/1080 [==============================] - 4s 4ms/step - loss: 0.1742 - acc: 0.9500\n",
      "Epoch 16/50\n",
      "1080/1080 [==============================] - 4s 4ms/step - loss: 0.0914 - acc: 0.9722\n",
      "Epoch 17/50\n",
      "1080/1080 [==============================] - 4s 4ms/step - loss: 0.0735 - acc: 0.9769\n",
      "Epoch 18/50\n",
      "1080/1080 [==============================] - 4s 4ms/step - loss: 0.0159 - acc: 0.9972\n",
      "Epoch 19/50\n",
      "1080/1080 [==============================] - 4s 4ms/step - loss: 0.0164 - acc: 0.9935\n",
      "Epoch 20/50\n",
      "1080/1080 [==============================] - 4s 4ms/step - loss: 0.0328 - acc: 0.9907\n",
      "Epoch 21/50\n",
      "1080/1080 [==============================] - 4s 4ms/step - loss: 0.0416 - acc: 0.9852\n",
      "Epoch 22/50\n",
      "1080/1080 [==============================] - 4s 4ms/step - loss: 0.1426 - acc: 0.9565\n",
      "Epoch 23/50\n",
      "1080/1080 [==============================] - 4s 4ms/step - loss: 0.0568 - acc: 0.9806\n",
      "Epoch 24/50\n",
      "1080/1080 [==============================] - 4s 4ms/step - loss: 0.0173 - acc: 0.9935\n",
      "Epoch 25/50\n",
      "1080/1080 [==============================] - 4s 4ms/step - loss: 0.0047 - acc: 0.9981\n",
      "Epoch 26/50\n",
      "1080/1080 [==============================] - 4s 4ms/step - loss: 0.0020 - acc: 1.0000\n",
      "Epoch 27/50\n",
      "1080/1080 [==============================] - 4s 4ms/step - loss: 0.0228 - acc: 0.9981\n",
      "Epoch 28/50\n",
      "1080/1080 [==============================] - 4s 4ms/step - loss: 0.9160 - acc: 0.7269\n",
      "Epoch 29/50\n",
      "1080/1080 [==============================] - 4s 4ms/step - loss: 0.2663 - acc: 0.9130\n",
      "Epoch 30/50\n",
      "1080/1080 [==============================] - 4s 4ms/step - loss: 0.1661 - acc: 0.9509\n",
      "Epoch 31/50\n",
      "1080/1080 [==============================] - 4s 4ms/step - loss: 0.0866 - acc: 0.9778\n",
      "Epoch 32/50\n",
      "1080/1080 [==============================] - 4s 4ms/step - loss: 0.1387 - acc: 0.9593\n",
      "Epoch 33/50\n",
      "1080/1080 [==============================] - 4s 4ms/step - loss: 0.0913 - acc: 0.9630\n",
      "Epoch 34/50\n",
      "1080/1080 [==============================] - 4s 4ms/step - loss: 0.1549 - acc: 0.9528\n",
      "Epoch 35/50\n",
      "1080/1080 [==============================] - 4s 4ms/step - loss: 0.0660 - acc: 0.9833\n",
      "Epoch 36/50\n",
      "1080/1080 [==============================] - 4s 4ms/step - loss: 0.0518 - acc: 0.9889\n",
      "Epoch 37/50\n",
      "1080/1080 [==============================] - 4s 4ms/step - loss: 0.0283 - acc: 0.9898\n",
      "Epoch 38/50\n",
      "1080/1080 [==============================] - 4s 4ms/step - loss: 0.0101 - acc: 0.9944\n",
      "Epoch 39/50\n",
      "1080/1080 [==============================] - 4s 4ms/step - loss: 0.0268 - acc: 0.9944\n",
      "Epoch 40/50\n",
      "1080/1080 [==============================] - 4s 4ms/step - loss: 0.0259 - acc: 0.9907\n",
      "Epoch 41/50\n",
      "1080/1080 [==============================] - 4s 4ms/step - loss: 0.0213 - acc: 0.9935\n",
      "Epoch 42/50\n",
      "1080/1080 [==============================] - 4s 4ms/step - loss: 0.0288 - acc: 0.9907\n",
      "Epoch 43/50\n",
      "1080/1080 [==============================] - 4s 4ms/step - loss: 0.0403 - acc: 0.9917\n",
      "Epoch 44/50\n",
      "1080/1080 [==============================] - 4s 4ms/step - loss: 0.0709 - acc: 0.9759\n",
      "Epoch 45/50\n",
      "1080/1080 [==============================] - 4s 4ms/step - loss: 0.0666 - acc: 0.9796\n",
      "Epoch 46/50\n",
      "1080/1080 [==============================] - 4s 4ms/step - loss: 0.0586 - acc: 0.9833\n",
      "Epoch 47/50\n",
      "1080/1080 [==============================] - 4s 4ms/step - loss: 0.0370 - acc: 0.9843\n",
      "Epoch 48/50\n",
      "1080/1080 [==============================] - 4s 4ms/step - loss: 0.0259 - acc: 0.9889\n",
      "Epoch 49/50\n",
      "1080/1080 [==============================] - 4s 4ms/step - loss: 0.0347 - acc: 0.9898\n",
      "Epoch 50/50\n",
      "1080/1080 [==============================] - 4s 4ms/step - loss: 0.0213 - acc: 0.9944\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<keras.callbacks.History at 0x203b339e198>"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.fit(X_train, Y_train, epochs = 50, batch_size = 32)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Expected Output**:\n",
    "\n",
    "<table>\n",
    "    <tr>\n",
    "        <td>\n",
    "            ** Epoch 1/2**\n",
    "        </td>\n",
    "        <td>\n",
    "           loss: between 1 and 5, acc: between 0.2 and 0.5, although your results can be different from ours.\n",
    "        </td>\n",
    "    </tr>\n",
    "    <tr>\n",
    "        <td>\n",
    "            ** Epoch 2/2**\n",
    "        </td>\n",
    "        <td>\n",
    "           loss: between 1 and 5, acc: between 0.2 and 0.5, you should see your loss decreasing and the accuracy increasing.\n",
    "        </td>\n",
    "    </tr>\n",
    "\n",
    "</table>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's see how this model (trained on only two epochs) performs on the test set."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "120/120 [==============================] - 0s 4ms/step\n",
      "Loss = 0.5502403497695922\n",
      "Test Accuracy = 0.9083333373069763\n"
     ]
    }
   ],
   "source": [
    "preds = model.evaluate(X_test, Y_test)\n",
    "print (\"Loss = \" + str(preds[0]))\n",
    "print (\"Test Accuracy = \" + str(preds[1]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Expected Output**:\n",
    "\n",
    "<table>\n",
    "    <tr>\n",
    "        <td>\n",
    "            **Test Accuracy**\n",
    "        </td>\n",
    "        <td>\n",
    "           between 0.16 and 0.25\n",
    "        </td>\n",
    "    </tr>\n",
    "\n",
    "</table>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "For the purpose of this assignment, we've asked you to train the model only for two epochs. You can see that it achieves poor performances. Please go ahead and submit your assignment; to check correctness, the online grader will run your code only for a small number of epochs as well."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "After you have finished this official (graded) part of this assignment, you can also optionally train the ResNet for more iterations, if you want. We get a lot better performance when we train for ~20 epochs, but this will take more than an hour when training on a CPU. \n",
    "\n",
    "Using a GPU, we've trained our own ResNet50 model's weights on the SIGNS dataset. You can load and run our trained model on the test set in the cells below. It may take ≈1min to load the model."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "#model = load_model('ResNet50.h5') "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "120/120 [==============================] - 0s 1ms/step\n",
      "Loss = 0.5502403497695922\n",
      "Test Accuracy = 0.9083333373069763\n"
     ]
    }
   ],
   "source": [
    "preds = model.evaluate(X_test, Y_test)\n",
    "print (\"Loss = \" + str(preds[0]))\n",
    "print (\"Test Accuracy = \" + str(preds[1]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "ResNet50 is a powerful model for image classification when it is trained for an adequate number of iterations. We hope you can use what you've learnt and apply it to your own classification problem to perform state-of-the-art accuracy.\n",
    "\n",
    "Congratulations on finishing this assignment! You've now implemented a state-of-the-art image classification system! "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4 - Test on your own image (Optional/Ungraded)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "If you wish, you can also take a picture of your own hand and see the output of the model. To do this:\n",
    "    1. Click on \"File\" in the upper bar of this notebook, then click \"Open\" to go on your Coursera Hub.\n",
    "    2. Add your image to this Jupyter Notebook's directory, in the \"images\" folder\n",
    "    3. Write your image's name in the following code\n",
    "    4. Run the code and check if the algorithm is right! "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Input image shape: (1, 64, 64, 3)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\program_files\\anaconda\\lib\\site-packages\\ipykernel_launcher.py:7: DeprecationWarning: `imread` is deprecated!\n",
      "`imread` is deprecated in SciPy 1.0.0, and will be removed in 1.2.0.\n",
      "Use ``imageio.imread`` instead.\n",
      "  import sys\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "class prediction vector [p(0), p(1), p(2), p(3), p(4), p(5)] = \n",
      "[[1. 0. 0. 0. 0. 0.]]\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x203b0b54320>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "img_path = 'images/my_image.jpg'\n",
    "img = image.load_img(img_path, target_size=(64, 64))\n",
    "x = image.img_to_array(img)\n",
    "x = np.expand_dims(x, axis=0)\n",
    "x = preprocess_input(x)\n",
    "print('Input image shape:', x.shape)\n",
    "my_image = scipy.misc.imread(img_path)\n",
    "imshow(my_image)\n",
    "print(\"class prediction vector [p(0), p(1), p(2), p(3), p(4), p(5)] = \")\n",
    "print(model.predict(x))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "You can also print a summary of your model by running the following code."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "__________________________________________________________________________________________________\n",
      "Layer (type)                    Output Shape         Param #     Connected to                     \n",
      "==================================================================================================\n",
      "input_1 (InputLayer)            (None, 64, 64, 3)    0                                            \n",
      "__________________________________________________________________________________________________\n",
      "zero_padding2d_1 (ZeroPadding2D (None, 70, 70, 3)    0           input_1[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "conv1 (Conv2D)                  (None, 32, 32, 64)   9472        zero_padding2d_1[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "bn_conv1 (BatchNormalization)   (None, 32, 32, 64)   256         conv1[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "activation_4 (Activation)       (None, 32, 32, 64)   0           bn_conv1[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "max_pooling2d_1 (MaxPooling2D)  (None, 15, 15, 64)   0           activation_4[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "res2a_branch2a (Conv2D)         (None, 15, 15, 64)   4160        max_pooling2d_1[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "bn2a_branch2a (BatchNormalizati (None, 15, 15, 64)   256         res2a_branch2a[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "activation_5 (Activation)       (None, 15, 15, 64)   0           bn2a_branch2a[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "res2a_branch2b (Conv2D)         (None, 15, 15, 64)   36928       activation_5[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "bn2a_branch2b (BatchNormalizati (None, 15, 15, 64)   256         res2a_branch2b[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "activation_6 (Activation)       (None, 15, 15, 64)   0           bn2a_branch2b[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "res2a_branch2c (Conv2D)         (None, 15, 15, 256)  16640       activation_6[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "res2a_branch1 (Conv2D)          (None, 15, 15, 256)  16640       max_pooling2d_1[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "bn2a_branch2c (BatchNormalizati (None, 15, 15, 256)  1024        res2a_branch2c[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "bn2a_branch1 (BatchNormalizatio (None, 15, 15, 256)  1024        res2a_branch1[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "add_2 (Add)                     (None, 15, 15, 256)  0           bn2a_branch2c[0][0]              \n",
      "                                                                 bn2a_branch1[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "activation_7 (Activation)       (None, 15, 15, 256)  0           add_2[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "res2b_branch2a (Conv2D)         (None, 15, 15, 64)   16448       activation_7[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "bn2b_branch2a (BatchNormalizati (None, 15, 15, 64)   256         res2b_branch2a[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "activation_8 (Activation)       (None, 15, 15, 64)   0           bn2b_branch2a[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "res2b_branch2b (Conv2D)         (None, 15, 15, 64)   36928       activation_8[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "bn2b_branch2b (BatchNormalizati (None, 15, 15, 64)   256         res2b_branch2b[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "activation_9 (Activation)       (None, 15, 15, 64)   0           bn2b_branch2b[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "res2b_branch2c (Conv2D)         (None, 15, 15, 256)  16640       activation_9[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "bn2b_branch2c (BatchNormalizati (None, 15, 15, 256)  1024        res2b_branch2c[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "add_3 (Add)                     (None, 15, 15, 256)  0           bn2b_branch2c[0][0]              \n",
      "                                                                 activation_7[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "activation_10 (Activation)      (None, 15, 15, 256)  0           add_3[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "res2c_branch2a (Conv2D)         (None, 15, 15, 64)   16448       activation_10[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "bn2c_branch2a (BatchNormalizati (None, 15, 15, 64)   256         res2c_branch2a[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "activation_11 (Activation)      (None, 15, 15, 64)   0           bn2c_branch2a[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "res2c_branch2b (Conv2D)         (None, 15, 15, 64)   36928       activation_11[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "bn2c_branch2b (BatchNormalizati (None, 15, 15, 64)   256         res2c_branch2b[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "activation_12 (Activation)      (None, 15, 15, 64)   0           bn2c_branch2b[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "res2c_branch2c (Conv2D)         (None, 15, 15, 256)  16640       activation_12[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "bn2c_branch2c (BatchNormalizati (None, 15, 15, 256)  1024        res2c_branch2c[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "add_4 (Add)                     (None, 15, 15, 256)  0           bn2c_branch2c[0][0]              \n",
      "                                                                 activation_10[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "activation_13 (Activation)      (None, 15, 15, 256)  0           add_4[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "res3a_branch2a (Conv2D)         (None, 8, 8, 128)    32896       activation_13[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "bn3a_branch2a (BatchNormalizati (None, 8, 8, 128)    512         res3a_branch2a[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "activation_14 (Activation)      (None, 8, 8, 128)    0           bn3a_branch2a[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "res3a_branch2b (Conv2D)         (None, 8, 8, 128)    147584      activation_14[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "bn3a_branch2b (BatchNormalizati (None, 8, 8, 128)    512         res3a_branch2b[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "activation_15 (Activation)      (None, 8, 8, 128)    0           bn3a_branch2b[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "res3a_branch2c (Conv2D)         (None, 8, 8, 512)    66048       activation_15[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "res3a_branch1 (Conv2D)          (None, 8, 8, 512)    131584      activation_13[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "bn3a_branch2c (BatchNormalizati (None, 8, 8, 512)    2048        res3a_branch2c[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "bn3a_branch1 (BatchNormalizatio (None, 8, 8, 512)    2048        res3a_branch1[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "add_5 (Add)                     (None, 8, 8, 512)    0           bn3a_branch2c[0][0]              \n",
      "                                                                 bn3a_branch1[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "activation_16 (Activation)      (None, 8, 8, 512)    0           add_5[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "res3b_branch2a (Conv2D)         (None, 8, 8, 128)    65664       activation_16[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "bn3b_branch2a (BatchNormalizati (None, 8, 8, 128)    512         res3b_branch2a[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "activation_17 (Activation)      (None, 8, 8, 128)    0           bn3b_branch2a[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "res3b_branch2b (Conv2D)         (None, 8, 8, 128)    147584      activation_17[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "bn3b_branch2b (BatchNormalizati (None, 8, 8, 128)    512         res3b_branch2b[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "activation_18 (Activation)      (None, 8, 8, 128)    0           bn3b_branch2b[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "res3b_branch2c (Conv2D)         (None, 8, 8, 512)    66048       activation_18[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "bn3b_branch2c (BatchNormalizati (None, 8, 8, 512)    2048        res3b_branch2c[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "add_6 (Add)                     (None, 8, 8, 512)    0           bn3b_branch2c[0][0]              \n",
      "                                                                 activation_16[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "activation_19 (Activation)      (None, 8, 8, 512)    0           add_6[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "res3c_branch2a (Conv2D)         (None, 8, 8, 128)    65664       activation_19[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "bn3c_branch2a (BatchNormalizati (None, 8, 8, 128)    512         res3c_branch2a[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "activation_20 (Activation)      (None, 8, 8, 128)    0           bn3c_branch2a[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "res3c_branch2b (Conv2D)         (None, 8, 8, 128)    147584      activation_20[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "bn3c_branch2b (BatchNormalizati (None, 8, 8, 128)    512         res3c_branch2b[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "activation_21 (Activation)      (None, 8, 8, 128)    0           bn3c_branch2b[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "res3c_branch2c (Conv2D)         (None, 8, 8, 512)    66048       activation_21[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "bn3c_branch2c (BatchNormalizati (None, 8, 8, 512)    2048        res3c_branch2c[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "add_7 (Add)                     (None, 8, 8, 512)    0           bn3c_branch2c[0][0]              \n",
      "                                                                 activation_19[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "activation_22 (Activation)      (None, 8, 8, 512)    0           add_7[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "res3d_branch2a (Conv2D)         (None, 8, 8, 128)    65664       activation_22[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "bn3d_branch2a (BatchNormalizati (None, 8, 8, 128)    512         res3d_branch2a[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "activation_23 (Activation)      (None, 8, 8, 128)    0           bn3d_branch2a[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "res3d_branch2b (Conv2D)         (None, 8, 8, 128)    147584      activation_23[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "bn3d_branch2b (BatchNormalizati (None, 8, 8, 128)    512         res3d_branch2b[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "activation_24 (Activation)      (None, 8, 8, 128)    0           bn3d_branch2b[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "res3d_branch2c (Conv2D)         (None, 8, 8, 512)    66048       activation_24[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "bn3d_branch2c (BatchNormalizati (None, 8, 8, 512)    2048        res3d_branch2c[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "add_8 (Add)                     (None, 8, 8, 512)    0           bn3d_branch2c[0][0]              \n",
      "                                                                 activation_22[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "activation_25 (Activation)      (None, 8, 8, 512)    0           add_8[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "res4a_branch2a (Conv2D)         (None, 4, 4, 256)    131328      activation_25[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "bn4a_branch2a (BatchNormalizati (None, 4, 4, 256)    1024        res4a_branch2a[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "activation_26 (Activation)      (None, 4, 4, 256)    0           bn4a_branch2a[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "res4a_branch2b (Conv2D)         (None, 4, 4, 256)    590080      activation_26[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "bn4a_branch2b (BatchNormalizati (None, 4, 4, 256)    1024        res4a_branch2b[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "activation_27 (Activation)      (None, 4, 4, 256)    0           bn4a_branch2b[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "res4a_branch2c (Conv2D)         (None, 4, 4, 1024)   263168      activation_27[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "res4a_branch1 (Conv2D)          (None, 4, 4, 1024)   525312      activation_25[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "bn4a_branch2c (BatchNormalizati (None, 4, 4, 1024)   4096        res4a_branch2c[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "bn4a_branch1 (BatchNormalizatio (None, 4, 4, 1024)   4096        res4a_branch1[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "add_9 (Add)                     (None, 4, 4, 1024)   0           bn4a_branch2c[0][0]              \n",
      "                                                                 bn4a_branch1[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "activation_28 (Activation)      (None, 4, 4, 1024)   0           add_9[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "res4b_branch2a (Conv2D)         (None, 4, 4, 256)    262400      activation_28[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "bn4b_branch2a (BatchNormalizati (None, 4, 4, 256)    1024        res4b_branch2a[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "activation_29 (Activation)      (None, 4, 4, 256)    0           bn4b_branch2a[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "res4b_branch2b (Conv2D)         (None, 4, 4, 256)    590080      activation_29[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "bn4b_branch2b (BatchNormalizati (None, 4, 4, 256)    1024        res4b_branch2b[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "activation_30 (Activation)      (None, 4, 4, 256)    0           bn4b_branch2b[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "res4b_branch2c (Conv2D)         (None, 4, 4, 1024)   263168      activation_30[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "bn4b_branch2c (BatchNormalizati (None, 4, 4, 1024)   4096        res4b_branch2c[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "add_10 (Add)                    (None, 4, 4, 1024)   0           bn4b_branch2c[0][0]              \n",
      "                                                                 activation_28[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "activation_31 (Activation)      (None, 4, 4, 1024)   0           add_10[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "res4c_branch2a (Conv2D)         (None, 4, 4, 256)    262400      activation_31[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "bn4c_branch2a (BatchNormalizati (None, 4, 4, 256)    1024        res4c_branch2a[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "activation_32 (Activation)      (None, 4, 4, 256)    0           bn4c_branch2a[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "res4c_branch2b (Conv2D)         (None, 4, 4, 256)    590080      activation_32[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "bn4c_branch2b (BatchNormalizati (None, 4, 4, 256)    1024        res4c_branch2b[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "activation_33 (Activation)      (None, 4, 4, 256)    0           bn4c_branch2b[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "res4c_branch2c (Conv2D)         (None, 4, 4, 1024)   263168      activation_33[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "bn4c_branch2c (BatchNormalizati (None, 4, 4, 1024)   4096        res4c_branch2c[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "add_11 (Add)                    (None, 4, 4, 1024)   0           bn4c_branch2c[0][0]              \n",
      "                                                                 activation_31[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "activation_34 (Activation)      (None, 4, 4, 1024)   0           add_11[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "res4d_branch2a (Conv2D)         (None, 4, 4, 256)    262400      activation_34[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "bn4d_branch2a (BatchNormalizati (None, 4, 4, 256)    1024        res4d_branch2a[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "activation_35 (Activation)      (None, 4, 4, 256)    0           bn4d_branch2a[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "res4d_branch2b (Conv2D)         (None, 4, 4, 256)    590080      activation_35[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "bn4d_branch2b (BatchNormalizati (None, 4, 4, 256)    1024        res4d_branch2b[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "activation_36 (Activation)      (None, 4, 4, 256)    0           bn4d_branch2b[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "res4d_branch2c (Conv2D)         (None, 4, 4, 1024)   263168      activation_36[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "bn4d_branch2c (BatchNormalizati (None, 4, 4, 1024)   4096        res4d_branch2c[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "add_12 (Add)                    (None, 4, 4, 1024)   0           bn4d_branch2c[0][0]              \n",
      "                                                                 activation_34[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "activation_37 (Activation)      (None, 4, 4, 1024)   0           add_12[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "res4e_branch2a (Conv2D)         (None, 4, 4, 256)    262400      activation_37[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "bn4e_branch2a (BatchNormalizati (None, 4, 4, 256)    1024        res4e_branch2a[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "activation_38 (Activation)      (None, 4, 4, 256)    0           bn4e_branch2a[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "res4e_branch2b (Conv2D)         (None, 4, 4, 256)    590080      activation_38[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "bn4e_branch2b (BatchNormalizati (None, 4, 4, 256)    1024        res4e_branch2b[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "activation_39 (Activation)      (None, 4, 4, 256)    0           bn4e_branch2b[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "res4e_branch2c (Conv2D)         (None, 4, 4, 1024)   263168      activation_39[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "bn4e_branch2c (BatchNormalizati (None, 4, 4, 1024)   4096        res4e_branch2c[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "add_13 (Add)                    (None, 4, 4, 1024)   0           bn4e_branch2c[0][0]              \n",
      "                                                                 activation_37[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "activation_40 (Activation)      (None, 4, 4, 1024)   0           add_13[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "res4f_branch2a (Conv2D)         (None, 4, 4, 256)    262400      activation_40[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "bn4f_branch2a (BatchNormalizati (None, 4, 4, 256)    1024        res4f_branch2a[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "activation_41 (Activation)      (None, 4, 4, 256)    0           bn4f_branch2a[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "res4f_branch2b (Conv2D)         (None, 4, 4, 256)    590080      activation_41[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "bn4f_branch2b (BatchNormalizati (None, 4, 4, 256)    1024        res4f_branch2b[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "activation_42 (Activation)      (None, 4, 4, 256)    0           bn4f_branch2b[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "res4f_branch2c (Conv2D)         (None, 4, 4, 1024)   263168      activation_42[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "bn4f_branch2c (BatchNormalizati (None, 4, 4, 1024)   4096        res4f_branch2c[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "add_14 (Add)                    (None, 4, 4, 1024)   0           bn4f_branch2c[0][0]              \n",
      "                                                                 activation_40[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "activation_43 (Activation)      (None, 4, 4, 1024)   0           add_14[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "res5a_branch2a (Conv2D)         (None, 2, 2, 512)    524800      activation_43[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "bn5a_branch2a (BatchNormalizati (None, 2, 2, 512)    2048        res5a_branch2a[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "activation_44 (Activation)      (None, 2, 2, 512)    0           bn5a_branch2a[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "res5a_branch2b (Conv2D)         (None, 2, 2, 512)    2359808     activation_44[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "bn5a_branch2b (BatchNormalizati (None, 2, 2, 512)    2048        res5a_branch2b[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "activation_45 (Activation)      (None, 2, 2, 512)    0           bn5a_branch2b[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "res5a_branch2c (Conv2D)         (None, 2, 2, 2048)   1050624     activation_45[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "res5a_branch1 (Conv2D)          (None, 2, 2, 2048)   2099200     activation_43[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "bn5a_branch2c (BatchNormalizati (None, 2, 2, 2048)   8192        res5a_branch2c[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "bn5a_branch1 (BatchNormalizatio (None, 2, 2, 2048)   8192        res5a_branch1[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "add_15 (Add)                    (None, 2, 2, 2048)   0           bn5a_branch2c[0][0]              \n",
      "                                                                 bn5a_branch1[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "activation_46 (Activation)      (None, 2, 2, 2048)   0           add_15[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "res5b_branch2a (Conv2D)         (None, 2, 2, 256)    524544      activation_46[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "bn5b_branch2a (BatchNormalizati (None, 2, 2, 256)    1024        res5b_branch2a[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "activation_47 (Activation)      (None, 2, 2, 256)    0           bn5b_branch2a[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "res5b_branch2b (Conv2D)         (None, 2, 2, 256)    590080      activation_47[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "bn5b_branch2b (BatchNormalizati (None, 2, 2, 256)    1024        res5b_branch2b[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "activation_48 (Activation)      (None, 2, 2, 256)    0           bn5b_branch2b[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "res5b_branch2c (Conv2D)         (None, 2, 2, 2048)   526336      activation_48[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "bn5b_branch2c (BatchNormalizati (None, 2, 2, 2048)   8192        res5b_branch2c[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "add_16 (Add)                    (None, 2, 2, 2048)   0           bn5b_branch2c[0][0]              \n",
      "                                                                 activation_46[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "activation_49 (Activation)      (None, 2, 2, 2048)   0           add_16[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "res5c_branch2a (Conv2D)         (None, 2, 2, 256)    524544      activation_49[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "bn5c_branch2a (BatchNormalizati (None, 2, 2, 256)    1024        res5c_branch2a[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "activation_50 (Activation)      (None, 2, 2, 256)    0           bn5c_branch2a[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "res5c_branch2b (Conv2D)         (None, 2, 2, 256)    590080      activation_50[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "bn5c_branch2b (BatchNormalizati (None, 2, 2, 256)    1024        res5c_branch2b[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "activation_51 (Activation)      (None, 2, 2, 256)    0           bn5c_branch2b[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "res5c_branch2c (Conv2D)         (None, 2, 2, 2048)   526336      activation_51[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "bn5c_branch2c (BatchNormalizati (None, 2, 2, 2048)   8192        res5c_branch2c[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "add_17 (Add)                    (None, 2, 2, 2048)   0           bn5c_branch2c[0][0]              \n",
      "                                                                 activation_49[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "activation_52 (Activation)      (None, 2, 2, 2048)   0           add_17[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "average_pooling2d_1 (AveragePoo (None, 1, 1, 2048)   0           activation_52[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "flatten_1 (Flatten)             (None, 2048)         0           average_pooling2d_1[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "fc6 (Dense)                     (None, 6)            12294       flatten_1[0][0]                  \n",
      "==================================================================================================\n",
      "Total params: 17,958,790\n",
      "Trainable params: 17,907,718\n",
      "Non-trainable params: 51,072\n",
      "__________________________________________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "model.summary()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Finally, run the code below to visualize your ResNet50. You can also download a .png picture of your model by going to \"File -> Open...-> model.png\"."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "ename": "OSError",
     "evalue": "`pydot` failed to call GraphViz.Please install GraphViz (https://www.graphviz.org/) and ensure that its executables are in the $PATH.",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mFileNotFoundError\u001b[0m                         Traceback (most recent call last)",
      "\u001b[1;32md:\\program_files\\anaconda\\lib\\site-packages\\pydot.py\u001b[0m in \u001b[0;36mcreate\u001b[1;34m(self, prog, format, encoding)\u001b[0m\n\u001b[0;32m   1860\u001b[0m                 \u001b[0mshell\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mFalse\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1861\u001b[1;33m                 stderr=subprocess.PIPE, stdout=subprocess.PIPE)\n\u001b[0m\u001b[0;32m   1862\u001b[0m         \u001b[1;32mexcept\u001b[0m \u001b[0mOSError\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\program_files\\anaconda\\lib\\subprocess.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, args, bufsize, executable, stdin, stdout, stderr, preexec_fn, close_fds, shell, cwd, env, universal_newlines, startupinfo, creationflags, restore_signals, start_new_session, pass_fds, encoding, errors)\u001b[0m\n\u001b[0;32m    708\u001b[0m                                 \u001b[0merrread\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0merrwrite\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 709\u001b[1;33m                                 restore_signals, start_new_session)\n\u001b[0m\u001b[0;32m    710\u001b[0m         \u001b[1;32mexcept\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\program_files\\anaconda\\lib\\subprocess.py\u001b[0m in \u001b[0;36m_execute_child\u001b[1;34m(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, unused_restore_signals, unused_start_new_session)\u001b[0m\n\u001b[0;32m    996\u001b[0m                                          \u001b[0mos\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfspath\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcwd\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mcwd\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32mNone\u001b[0m \u001b[1;32melse\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 997\u001b[1;33m                                          startupinfo)\n\u001b[0m\u001b[0;32m    998\u001b[0m             \u001b[1;32mfinally\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mFileNotFoundError\u001b[0m: [WinError 2] 系统找不到指定的文件。",
      "\nDuring handling of the above exception, another exception occurred:\n",
      "\u001b[1;31mFileNotFoundError\u001b[0m                         Traceback (most recent call last)",
      "\u001b[1;32md:\\program_files\\anaconda\\lib\\site-packages\\keras\\utils\\vis_utils.py\u001b[0m in \u001b[0;36m_check_pydot\u001b[1;34m()\u001b[0m\n\u001b[0;32m     25\u001b[0m         \u001b[1;31m# to check the pydot/graphviz installation.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 26\u001b[1;33m         \u001b[0mpydot\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mDot\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcreate\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mpydot\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mDot\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     27\u001b[0m     \u001b[1;32mexcept\u001b[0m \u001b[0mOSError\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\program_files\\anaconda\\lib\\site-packages\\pydot.py\u001b[0m in \u001b[0;36mcreate\u001b[1;34m(self, prog, format, encoding)\u001b[0m\n\u001b[0;32m   1866\u001b[0m                     prog=prog)\n\u001b[1;32m-> 1867\u001b[1;33m                 \u001b[1;32mraise\u001b[0m \u001b[0mOSError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   1868\u001b[0m             \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mFileNotFoundError\u001b[0m: [WinError 2] \"dot.exe\" not found in path.",
      "\nDuring handling of the above exception, another exception occurred:\n",
      "\u001b[1;31mOSError\u001b[0m                                   Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-25-bf56bbf9f76a>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mplot_model\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmodel\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mto_file\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'model.png'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      2\u001b[0m \u001b[0mSVG\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmodel_to_dot\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmodel\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcreate\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mprog\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'dot'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mformat\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'svg'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\program_files\\anaconda\\lib\\site-packages\\keras\\utils\\vis_utils.py\u001b[0m in \u001b[0;36mplot_model\u001b[1;34m(model, to_file, show_shapes, show_layer_names, rankdir)\u001b[0m\n\u001b[0;32m    132\u001b[0m             \u001b[1;34m'LR'\u001b[0m \u001b[0mcreates\u001b[0m \u001b[0ma\u001b[0m \u001b[0mhorizontal\u001b[0m \u001b[0mplot\u001b[0m\u001b[1;33m.\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    133\u001b[0m     \"\"\"\n\u001b[1;32m--> 134\u001b[1;33m     \u001b[0mdot\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mmodel_to_dot\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmodel\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mshow_shapes\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mshow_layer_names\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mrankdir\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    135\u001b[0m     \u001b[0m_\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mextension\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mos\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpath\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msplitext\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mto_file\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    136\u001b[0m     \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mextension\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\program_files\\anaconda\\lib\\site-packages\\keras\\utils\\vis_utils.py\u001b[0m in \u001b[0;36mmodel_to_dot\u001b[1;34m(model, show_shapes, show_layer_names, rankdir)\u001b[0m\n\u001b[0;32m     53\u001b[0m     \u001b[1;32mfrom\u001b[0m \u001b[1;33m.\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmodels\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mSequential\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     54\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 55\u001b[1;33m     \u001b[0m_check_pydot\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     56\u001b[0m     \u001b[0mdot\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mpydot\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mDot\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     57\u001b[0m     \u001b[0mdot\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mset\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'rankdir'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mrankdir\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\program_files\\anaconda\\lib\\site-packages\\keras\\utils\\vis_utils.py\u001b[0m in \u001b[0;36m_check_pydot\u001b[1;34m()\u001b[0m\n\u001b[0;32m     27\u001b[0m     \u001b[1;32mexcept\u001b[0m \u001b[0mOSError\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     28\u001b[0m         raise OSError(\n\u001b[1;32m---> 29\u001b[1;33m             \u001b[1;34m'`pydot` failed to call GraphViz.'\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     30\u001b[0m             \u001b[1;34m'Please install GraphViz (https://www.graphviz.org/) '\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     31\u001b[0m             'and ensure that its executables are in the $PATH.')\n",
      "\u001b[1;31mOSError\u001b[0m: `pydot` failed to call GraphViz.Please install GraphViz (https://www.graphviz.org/) and ensure that its executables are in the $PATH."
     ]
    }
   ],
   "source": [
    "plot_model(model, to_file='model.png')\n",
    "SVG(model_to_dot(model).create(prog='dot', format='svg'))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font color='blue'>\n",
    "**What you should remember:**\n",
    "- Very deep \"plain\" networks don't work in practice because they are hard to train due to vanishing gradients.  \n",
    "- The skip-connections help to address the Vanishing Gradient problem. They also make it easy for a ResNet block to learn an identity function. \n",
    "- There are two main type of blocks: The identity block and the convolutional block. \n",
    "- Very deep Residual Networks are built by stacking these blocks together."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### References \n",
    "\n",
    "This notebook presents the ResNet algorithm due to He et al. (2015). The implementation here also took significant inspiration and follows the structure given in the github repository of Francois Chollet: \n",
    "\n",
    "- Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun - [Deep Residual Learning for Image Recognition (2015)](https://arxiv.org/abs/1512.03385)\n",
    "- Francois Chollet's github repository: https://github.com/fchollet/deep-learning-models/blob/master/resnet50.py\n"
   ]
  }
 ],
 "metadata": {
  "coursera": {
   "course_slug": "convolutional-neural-networks",
   "graded_item_id": "OEpi5",
   "launcher_item_id": "jK9EQ"
  },
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
